package main

import "fmt"

// struct 结构体
// 自定义类型和类型别名

// type后面是类型
type myname string   // 自定义类型
type myint = int     // 类型别名
type preson struct { // 自定义结构体,多维度封装
	name   string
	age    int
	gender string
	hobby  []string
}

func main() {
	var name myname
	name = "致幻"
	fmt.Println(name)
	fmt.Printf("类型是:%T\n", name)

	var age myint
	age = 28
	fmt.Println(age)
	fmt.Printf("类型是:%T\n", age)

	var p preson // 定义类型变量
	// 初始化
	p.name = "致幻"
	p.age = 28
	p.gender = "男"
	p.hobby = []string{"写代码", "学习"}
	fmt.Println(p)            // {致幻 28 男 [写代码 学习]}
	fmt.Printf("类型是:%T\n", p) // 类型是:main.preson

	// 匿名结构体,多用于临时场景
	var s struct {
		name string
		age  int
	}
	s.name = "zhihuan"
	fmt.Printf("类型是:%T\n", s) //类型是:struct { name string; age int }

}
